var runtime.trace
182 uses
runtime (current package)
mstats.go#L464: lock(&trace.lock)
mstats.go#L502: unlock(&trace.lock)
trace.go#L31: var trace struct {
trace.go#L176: firstGen := traceNextGen(trace.lastNonZeroGen)
trace.go#L179: trace.seqGC = 1
trace.go#L182: trace.headerWritten = false
trace.go#L183: trace.readerGen.Store(firstGen)
trace.go#L184: trace.flushedGen.Store(0)
trace.go#L238: trace.minPageHeapAddr = uint64(mheap_.pages.inUse.ranges[0].base.addr())
trace.go#L259: trace.enabled = true
trace.go#L262: trace.debugMalloc = debug.malloc
trace.go#L263: trace.enabledWithAllocFree = true
trace.go#L266: trace.gen.Store(firstGen)
trace.go#L281: for trace.exitingSyscall.Load() != 0 {
trace.go#L299: if trace.enabledWithAllocFree {
trace.go#L343: gen := trace.gen.Load()
trace.go#L399: ug.stackID = traceStack(0, gp, &trace.stackTab[gen%2])
trace.go#L429: trace.lastNonZeroGen = gen
trace.go#L436: lock(&trace.lock)
trace.go#L437: trace.shutdown.Store(true)
trace.go#L438: trace.gen.Store(0)
trace.go#L439: unlock(&trace.lock)
trace.go#L443: trace.enabled = false
trace.go#L446: trace.gen.Store(traceNextGen(gen))
trace.go#L533: lock(&trace.lock)
trace.go#L540: unlock(&trace.lock)
trace.go#L596: trace.stackTab[gen%2].dump(gen)
trace.go#L597: trace.typeTab[gen%2].dump(gen)
trace.go#L598: trace.stringTab[gen%2].reset(gen)
trace.go#L602: lock(&trace.lock)
trace.go#L603: trace.flushedGen.Store(gen)
trace.go#L604: unlock(&trace.lock)
trace.go#L633: if trace.enabledWithAllocFree {
trace.go#L634: trace.enabledWithAllocFree = false
trace.go#L635: debug.malloc = trace.debugMalloc
trace.go#L657: semacquire(&trace.doneSema[gen%2])
trace.go#L659: raceacquire(unsafe.Pointer(&trace.doneSema[gen%2]))
trace.go#L665: lock(&trace.lock)
trace.go#L666: if !trace.full[gen%2].empty() {
trace.go#L670: if !trace.full[1-(gen%2)].empty() {
trace.go#L673: if trace.reading != nil || trace.reader.Load() != nil {
trace.go#L677: for trace.empty != nil {
trace.go#L678: buf := trace.empty
trace.go#L679: trace.empty = buf.link
trace.go#L683: trace.headerWritten = false
trace.go#L684: trace.shutdown.Store(false)
trace.go#L686: unlock(&trace.lock)
trace.go#L742: trace.markWorkerLabels[gen%2][i] = traceArg(trace.stringTab[gen%2].put(gen, label))
trace.go#L745: trace.goBlockReasons[gen%2][i] = traceArg(trace.stringTab[gen%2].put(gen, str))
trace.go#L748: trace.goStopReasons[gen%2][i] = traceArg(trace.stringTab[gen%2].put(gen, str))
trace.go#L782: if !trace.reader.CompareAndSwapNoWB(nil, gp) {
trace.go#L825: lock(&trace.lock)
trace.go#L827: if trace.reader.Load() != nil {
trace.go#L831: unlock(&trace.lock)
trace.go#L836: if buf := trace.reading; buf != nil {
trace.go#L837: buf.link = trace.empty
trace.go#L838: trace.empty = buf
trace.go#L839: trace.reading = nil
trace.go#L842: if !trace.headerWritten {
trace.go#L843: trace.headerWritten = true
trace.go#L844: unlock(&trace.lock)
trace.go#L850: if trace.readerGen.Load() == 0 {
trace.go#L851: trace.readerGen.Store(1)
trace.go#L855: assertLockHeld(&trace.lock)
trace.go#L856: gen = trace.readerGen.Load()
trace.go#L860: if !trace.full[gen%2].empty() {
trace.go#L868: if trace.flushedGen.Load() == gen {
trace.go#L870: if !trace.endOfGenerationWritten {
trace.go#L871: trace.endOfGenerationWritten = true
trace.go#L872: unlock(&trace.lock)
trace.go#L877: trace.endOfGenerationWritten = false
trace.go#L880: if trace.shutdown.Load() {
trace.go#L881: unlock(&trace.lock)
trace.go#L891: racerelease(unsafe.Pointer(&trace.doneSema[gen%2]))
trace.go#L893: semrelease(&trace.doneSema[gen%2])
trace.go#L904: trace.readerGen.Store(trace.gen.Load())
trace.go#L905: unlock(&trace.lock)
trace.go#L913: racerelease(unsafe.Pointer(&trace.doneSema[gen%2]))
trace.go#L915: semrelease(&trace.doneSema[gen%2])
trace.go#L918: lock(&trace.lock)
trace.go#L930: trace.workAvailable.Store(false)
trace.go#L931: unlock(&trace.lock)
trace.go#L935: tbuf := trace.full[gen%2].pop()
trace.go#L936: trace.reading = tbuf
trace.go#L937: unlock(&trace.lock)
trace.go#L949: if gp == nil || !trace.reader.CompareAndSwapNoWB(gp, nil) {
trace.go#L971: if trace.flushedGen.Load() == trace.readerGen.Load() || trace.workAvailable.Load() {
trace.go#L972: return trace.reader.Load()
traceallocfree.go#L40: w.varint(uint64(trace.minPageHeapAddr))
traceallocfree.go#L109: return traceArg(uint64(s.base())-trace.minPageHeapAddr) / pageSize
traceallocfree.go#L133: return traceArg(uint64(addr)-trace.minPageHeapAddr) / gc.MinHeapAlign
traceallocfree.go#L155: return traceArg(uint64(base)-trace.minPageHeapAddr) / fixedStack
tracebuf.go#L145: lock(&trace.lock)
tracebuf.go#L149: unlock(&trace.lock)
tracebuf.go#L158: lock(&trace.lock)
tracebuf.go#L162: if trace.empty != nil {
tracebuf.go#L163: w.traceBuf = trace.empty
tracebuf.go#L164: trace.empty = w.traceBuf.link
tracebuf.go#L165: unlock(&trace.lock)
tracebuf.go#L167: unlock(&trace.lock)
tracebuf.go#L369: assertLockHeld(&trace.lock)
tracebuf.go#L380: trace.full[gen%2].push(buf)
tracebuf.go#L384: if !trace.workAvailable.Load() {
tracebuf.go#L385: trace.workAvailable.Store(true)
tracecpu.go#L20: trace.cpuLogRead[0] = newProfBuf(3, profBufWordCount, profBufTagCount)
tracecpu.go#L21: trace.cpuLogRead[1] = newProfBuf(3, profBufWordCount, profBufTagCount)
tracecpu.go#L29: trace.cpuLogWrite[0].Store(trace.cpuLogRead[0])
tracecpu.go#L30: trace.cpuLogWrite[1].Store(trace.cpuLogRead[1])
tracecpu.go#L42: trace.cpuSleep = newWakeableSleep()
tracecpu.go#L56: trace.cpuSleep.sleep(100_000_000)
tracecpu.go#L71: trace.cpuLogDone = done
tracecpu.go#L89: trace.cpuLogWrite[0].Store(nil)
tracecpu.go#L90: trace.cpuLogWrite[1].Store(nil)
tracecpu.go#L91: trace.cpuLogRead[0].close()
tracecpu.go#L92: trace.cpuLogRead[1].close()
tracecpu.go#L93: trace.cpuSleep.wake()
tracecpu.go#L96: <-trace.cpuLogDone
tracecpu.go#L99: trace.cpuLogDone = nil
tracecpu.go#L100: trace.cpuLogRead[0] = nil
tracecpu.go#L101: trace.cpuLogRead[1] = nil
tracecpu.go#L102: trace.cpuSleep.close()
tracecpu.go#L121: data, tags, eof := trace.cpuLogRead[gen%2].read(profBufNonBlocking)
tracecpu.go#L170: w := unsafeTraceWriter(gen, trace.cpuBuf[gen%2])
tracecpu.go#L181: stackID := trace.stackTab[gen%2].put(pcBuf[:nstk])
tracecpu.go#L191: trace.cpuBuf[gen%2] = w.traceBuf
tracecpu.go#L200: if buf := trace.cpuBuf[gen%2]; buf != nil {
tracecpu.go#L202: lock(&trace.lock)
tracecpu.go#L204: unlock(&trace.lock)
tracecpu.go#L205: trace.cpuBuf[gen%2] = nil
tracecpu.go#L235: gen := trace.gen.Load()
tracecpu.go#L264: for !trace.signalLock.CompareAndSwap(0, 1) {
tracecpu.go#L269: if log := trace.cpuLogWrite[gen%2].Load(); log != nil {
tracecpu.go#L276: trace.signalLock.Store(0)
traceevent.go#L59: return traceArg(traceStack(skip, nil, &trace.stackTab[tl.gen%2]))
traceevent.go#L69: return traceArg(trace.stackTab[tl.gen%2].put([]uintptr{
traceevent.go#L79: return traceArg(trace.stringTab[tl.gen%2].put(tl.gen, s))
traceevent.go#L86: return traceArg(trace.stringTab[tl.gen%2].emit(tl.gen, s))
traceevent.go#L91: return traceArg(trace.typeTab[tl.gen%2].put(typ))
traceruntime.go#L59: lockInit(&trace.stringTab[0].lock, lockRankTraceStrings)
traceruntime.go#L60: lockInit(&trace.stringTab[0].tab.mem.lock, lockRankTraceStrings)
traceruntime.go#L61: lockInit(&trace.stringTab[1].lock, lockRankTraceStrings)
traceruntime.go#L62: lockInit(&trace.stringTab[1].tab.mem.lock, lockRankTraceStrings)
traceruntime.go#L63: lockInit(&trace.stackTab[0].tab.mem.lock, lockRankTraceStackTab)
traceruntime.go#L64: lockInit(&trace.stackTab[1].tab.mem.lock, lockRankTraceStackTab)
traceruntime.go#L65: lockInit(&trace.typeTab[0].tab.mem.lock, lockRankTraceTypeTab)
traceruntime.go#L66: lockInit(&trace.typeTab[1].tab.mem.lock, lockRankTraceTypeTab)
traceruntime.go#L67: lockInit(&trace.lock, lockRankTrace)
traceruntime.go#L77: lockWithRankMayAcquire(&trace.lock, getLockRank(&trace.lock))
traceruntime.go#L151: return trace.enabled
traceruntime.go#L159: return trace.enabledWithAllocFree
traceruntime.go#L164: return trace.shutdown.Load()
traceruntime.go#L215: return traceLocker{mp, trace.gen.Load()}
traceruntime.go#L237: gen := trace.gen.Load()
traceruntime.go#L277: trace.exitingSyscall.Add(1)
traceruntime.go#L282: trace.exitingSyscall.Add(-1)
traceruntime.go#L313: tl.eventWriter(tracev2.GoRunning, tracev2.ProcRunning).event(tracev2.EvGCActive, traceArg(trace.seqGC))
traceruntime.go#L316: trace.seqGC++
traceruntime.go#L324: tl.eventWriter(tracev2.GoRunning, tracev2.ProcRunning).event(tracev2.EvGCBegin, traceArg(trace.seqGC), tl.stack(3))
traceruntime.go#L327: trace.seqGC++
traceruntime.go#L335: tl.eventWriter(tracev2.GoRunning, tracev2.ProcRunning).event(tracev2.EvGCEnd, traceArg(trace.seqGC))
traceruntime.go#L338: trace.seqGC++
traceruntime.go#L437: w.event(tracev2.EvGoLabel, trace.markWorkerLabels[tl.gen%2][pp.ptr().gcMarkWorkerMode])
traceruntime.go#L460: tl.eventWriter(tracev2.GoRunning, tracev2.ProcRunning).event(tracev2.EvGoStop, traceArg(trace.goStopReasons[tl.gen%2][reason]), tl.stack(0))
traceruntime.go#L468: tl.eventWriter(tracev2.GoRunning, tracev2.ProcRunning).event(tracev2.EvGoBlock, traceArg(trace.goBlockReasons[tl.gen%2][reason]), tl.stack(skip))
traceruntime.go#L699: lock(&trace.lock)
traceruntime.go#L710: unlock(&trace.lock)
tracestack.go#L244: frame.funcID = trace.stringTab[gen%2].put(gen, fn)
tracestack.go#L250: frame.fileID = trace.stringTab[gen%2].put(gen, file)
tracestring.go#L88: lock(&trace.lock)
tracestring.go#L90: unlock(&trace.lock)
tracetime.go#L108: lock(&trace.lock)
tracetime.go#L110: unlock(&trace.lock)